/*步骤一：引入*/
import axios from "axios"
import qs from "querystring"

/*步骤四：设置错误处理*/
//错误处理
// 根据状态和错误信息给出更明确的错误信息
const errorHandler = (status,info) => {
  //status错误状态码
  // info错误信息
  switch(status){
    case 400:
      console.log('语义错误');
      break;
    case 401:
      console.log('服务器认证失败');
      break;
    case 403:
      console.log('服务器请求拒绝执行');
      break;
    case 404:
      console.log('请检查网络请求地址');
      break;
    case 500:
      console.log('服务器发生意外');
      break;
    case 502:
      console.log('服务器无响应');
      break;
    default:
      console.log(info);
      break;
  }
}

/*步骤二，创建axios对象*/
// 创建axios对象
const instance = axios.create({

  // 公共配置
  baseURL: "http://iwenwiki.com",  //公共域名
  timeout: 5000                    //网络响应超时
})

/*步骤三：设置拦截器*/
//拦截器
// 发送请求和响应结果前都可以拦截
instance.interceptors.request.use(
  // 请求拦截，接收两个参数
  // 成功函数
  config => {
    // config表示请求信息
    if (config.method === "post") {
      config.data = qs.stringify(config.data)
    }
    return config
  },
  // 失败函数
  error => Promise.reject(error)

)
instance.interceptors.response.use(
  // 响应拦截
  // 成功
  response => response.status === 200 ? Promise.resolve(response) : Promise.reject(response),
  // 失败->步骤五的一部分
  error => {
    const { response } = error;
    if (response) {
      errorHandler(response.status, response.info)
    } else {
      console.log('断网了~~~');
    }
  }
)

/*步骤六：导出可用*/
export default instance


// 使用
// import axios from "./aDemo"
// import { onMounted } from "vue";
// onMounted(()=>{
//     axios.get("/api/blueberrypai/getIndexBanner.php")
//     .then(res=>{
//         console.log(res.data);
//     })
//     .catch(error =>{
//         console.log('错误信息'+error);
//     })
// })